package job;

import java.util.*;

/**
 * @author wq
 */
public class TestTreeMap {
    public static void main(String[] args) {
        /*
        * 会自动生成的是Character
        * */
        TreeMap<Character,Integer> treeMap=new TreeMap<>(
                new Comparator<Character>() {
                    @Override
                    public int compare(Character o1, Character o2) {
                        return o1-o2;
                    }
                }
        );

        /*
        * 可以是value的类型Integer吗？
        *
        * */

        /* 答案是不可以  系统会直接报错
        TreeMap<Character,Integer> treeMap1=new TreeMap<Character,Integer>(
                new Comparator<Integer>() {
                    @Override
                    public int compare(Integer o1, Integer o2) {
                        return o1-o2;
                    }
                }
        );
        */

        /**
         * 那么应该如何对value进行排序？？
         * 获取它的Map.Entry的集合
         * 然后使用 Collections中的sort方法进行排序
         */
        List<Map.Entry<Character,Integer>> list=new ArrayList<>(treeMap.entrySet());

        Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>() {
            @Override
            public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
                return o1.getValue()-o2.getValue();
            }
        });

        /*
        * Comparable和Comparator有什么区别呢？
        * Comparable是一个内比较器，实现Comparable的接口的类有一个特点就是这些类可以自己和自己比较
        *
        *
        * Comparator是外部比较器
        *
        * */


    }
}
